/* eslint-disable no-use-before-define */
import { ObjectUtil } from '@utils/object-util'

export class DeviceSaveForm {
  constructor (option?: Record<string, any>) {
    option && ObjectUtil.updateVal(this, option)
  }

  // 设备名称
  deviceName?: string
  // 网关id
  gatewayId?: string
  // 场景id
  groupIds?: string[]
  // 设备id
  id?: string
  // 备注
  notes?: string
  // 设备编号
  number?: string
  // 从机地址
  slaveAddress?: string
  // 变量模版id
  templateId?: string
  // 图片
  url?: string
}

export interface DeviceDTO {
  // 所属地址
  address?: string
  // 设备所属人
  adminName?: string
  // 物联网卡号
  cardNumber?: string
  // 创建时间
  createdAt?: string
  // 创建人
  createdBy?: string
  // 设备名称
  deviceName?: string
  // 网关id
  gatewayId?: number
  // 关联网关
  gatewayName?: string
  // 场景id
  groupId?: string
  // 需要关联场景ids
  groupIds?: string[]
  // 所属场景
  groupNameList?: string[]
  // 排序
  sort?: number
  // 设备id
  id?: string
  // 备注
  notes?: string
  // 设备编号
  number?: string
  // 模糊查询
  q?: string
  // 分享人数
  shareNum?: number
  // 从机地址
  slaveAddress?: string
  // 设备状态 0-离线 1-在线
  status?: boolean
  // 变量模版id
  templateId?: string
  // 关联变量模版
  templateName?: string
  // 图片
  url?: string
}

export interface Device {
  // 创建时间
  createdAt?: string
  // 创建人
  createdBy?: number
  // 删除标志（0代表存在 2代表删除）
  delFlag?: string
  // 设备名称
  deviceName?: string
  // 网关id
  gatewayId?: number
  // 场景id
  groupId?: number
  // 设备id
  id?: number
  // 备注
  notes?: string
  // 设备编号
  number?: string
  // 从机地址
  slaveAddress?: string
  // 变量模版id
  templateId?: number
  // 更新时间
  updatedAt?: string
  // 更新
  updatedBy?: number
  // 图片
  url?: string
}

export interface TbDevice {
  // 所属地址
  address?: string
  // 创建时间
  createdAt?: string
  // 创建人
  createdBy?: number
  // 设备名称
  deviceName?: string
  // 网关id
  gatewayId?: number
  // 关联网关
  gatewayName?: string
  // 场景id
  groupId?: number
  // 需要关联场景ids
  groupIds?: number[]
  // 所属场景
  groupNameList?: string[]
  // 设备id
  id?: number
  // 备注
  notes?: string
  // 设备编号
  number?: string
  // 模糊查询
  q?: string
  // 从机地址
  slaveAddress?: string
  // 设备状态 0-离线 1-在线
  status?: boolean
  // 变量模版id
  templateId?: number
  // 关联变量模版
  templateName?: string
  // 图片
  url?: string
}

export interface UserDeviceRoleDTO {
  // 设备id
  deviceId?: string
  // 权限类型 0-仅查看、1-允许控制、3-可管理、4-设备创建者
  roleType?: string,
  // 过期时间
  expiredTime?: string
}
